package queue

/*
实现一个接收任何类型的FIFO（先进先出）的队列
*/

// 定义一个切片，数据类型为空接口
type FIFO []interface{}

// 插入数据
func (queue *FIFO) Push(value interface{}) interface{} {

	*queue = append(*queue, value)
	return value
}

// 推出
func (queue *FIFO) Pop() interface{} {

	// 长度为零就没法再推出数据了
	if len(*queue) == 0 {
		return nil
	}
	value := (*queue)[len(*queue)-1]
	*queue = (*queue)[0 : len(*queue)-1]
	return value
}

func (queue *FIFO) IsEmpty() bool {

	return len(*queue) == 0
}
